1) Field of the Invention
The present invention relates to a memory management unit, code verifying apparatus, and a code decrypting apparatus incorporated in an information processing apparatus, such as a personal computer or a mobile communication terminal. More particularly, the present invention relates to a memory management unit, code verifying apparatus, and a code decrypting apparatus that can ensure validity of a code that is executed on the information processing apparatus, with ease and certainty, without changing architecture of a processor or a memory.
2) Description of the Related Art
It is desired that a secure code (a program that is described in machine language and interpreted by a central processing unit (CPU) to be executed) with ensured validity is executed on an information processing apparatus such as a personal computer or a mobile communication terminal. In other words, it is necessary to keep a specific code with a safety problem, which is altered by a malice third party before or after installation on a hard disk or the like, from being stored in a memory and executed on the apparatus.
Examples of a conventional technology that can satisfy the above desire are as follows:                (1) install an additional software for verification on the information processing apparatus, and verify the validity of a code using a verification information assigned to the code in advance, before executing the code; and        (2) install an additional software for decrypting on the information processing apparatus, and ensure the validity of a code by decrypting the code that is encrypted in advance, before executing the code.        
However, since the above technologies incorporate a specific software to verify or ensure the validity of a code, there is a possibility that the software for verification or decrypting itself can be altered, and it is not always possible to execute a safe code with ensured validity on the information processing apparatus.
When the software for verification is altered, there is a drawback that a code can be executed regardless of a result of the verification; and when the software for decrypting is altered, there is a drawback that a decrypted code can be altered before being execute. As a result, the above technologies cannot always guarantee that a safe code with ensured validity is executed on the apparatus.
Following methods can be considered to solve the problem arising from such software:                (1) attach an additional hardware for verification on a memory of the information processing apparatus, and verify a code assigned on a page that is a unit of memory assignment in a process, using the hardware for verification for every page; and        (2) attach an additional hardware for decrypting on a processor of the information processing apparatus, and decrypt a fetched code using the hardware for decrypting.        
However, development of such hardware is not easy. To attach a special hardware for verification on a memory or to attach a special hardware for decrypting on a processor is, in other words, to attach a new intelligence on a check portion of the memory or on a gate portion of the processor, respectively. It necessitates a considerable change of architecture of the processor or the memory, which cannot be developed with ease.
In the information processing apparatus, such as a personal computer or a mobile communication terminal, it is extremely important how to execute a safe code with ensured validity on the apparatus, and more preferably, it is necessary to develop a hardware that can solve the above problems with ease and certainty, without much changing the architecture of the processor or the memory.